home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Loadstar 92
/
092.d81
/
switch 'em
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-08-26
|
8KB
|
242 lines
3 poke56,152:clr:poke787,0
5 dv=peek(186):ifdv<8thendv=8
10 poke53281,0:poke53280,0:print"[147]"
12 gosub60000
15 rem goto30
20 sys57812"sw font",dv,0:poke780,0:poke781,0:poke782,200:sys65493
25 sys57812"copymem.o",dv,0:poke780,0:poke781,60:poke782,3:sys65493
26 poke53280,6:poke53281,6:bb=6:sys828,52224,51200,8
27 dv=peek(186):ifdv<8thendv=8
28 qp=256
30 poke56576,4:poke53272,2:poke648,192:poke53265,27
40 print"[154][147]":dimsn(46),sl(24)
45 w$="@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
50 forx=1to46:readsn(x):next
60 data27,7,23,11,30,13,29,14,14,27,13,7,27,11,30,7,13,23,30,13,23,14,11,11,14
70 data23,13,30,23,13,7,30,11,27,7,13,27,14,14,29,13,30,11,23,7,27
80 forx=1to24:readsl(x):next
90 data27,7,23,11,11,27,7,7,7,23,11,11,11,11,23,7,7,7,27,11,11,23,7,27
100 forx=1to6:readmn$(x):next
110 data"1. level 1 puzzle","2. level 2 puzzle","3. solution to level 1"
120 data"4. solution to level 2","5. instructions","6. quit"
130 bk$="[171][179][177][178][157][157][157][157][176][174][172][187][157][157][157][157][173][189][188][190][145][145]"
140 cl$(0)="[158]":cl$(1)="[144]":cl$(2)=""
150 ifpeek(787)=13thensys828,152*qp,49152,1000:sys828,156*qp,55296,1000:goto180
152 print"[147][150]":gosub2000
155 xx=7:yy=3:ww=24:dd=10:gosub3000
157 xx=5:yy=18:ww=28:dd=1:gosub3000
158 poke214,19:print:printtab(7)"t [158]- tile b [158]- background"
160 poke214,5:print:printtab(12)"_[195] switch 'em [195]^"
165 printtab(13)"[155]by brian boese"
170 print"[158]":fori=1to6:printtab(9)mn$(i):next
175 sys828,49152,152*qp,1000:sys828,55296,156*qp,1000:poke787,13
180 gm=1
220 poke214,7+gm:print:print""tab(9)mn$(gm):gosub1670
230 ifjs=15ora$=chr$(13)then310
240 ifa$>="1"anda$<="6"thengm=val(a$):goto310
250 ifjs=29thena$=""
260 ifjs=30thena$="[145]"
270 print"":poke214,7+gm:print:printtab(9)"[158]"mn$(gm)
280 ifa$=""thengm=gm+1:ifgm=7thengm=1
290 ifa$="[145]"thengm=gm-1:ifgm=0thengm=6
300 goto220
310 ifgm=6then9000
320 ifgm=5thengosub1470:goto150
330 ongmgosub980,350,980,350
340 goto150
350 print"[147][150]":gosub2000
352 xx=1:yy=16:ww=12:dd=4:gosub3000
353 print"[145][145][145][145][145][145]switch 'em"
354 print"[155]level 2"
355 print"i[158]-up m[158]-down"
356 print"j[158]-lft k[158]-rght"
357 xx=26:yy=2:ww=9:dd=2:gosub3000
360 print""tab(9)"[144][166][163][163][163][163][163][163][163][163][163][163][163][163][220]"
365 forx=1to5:printtab(9)"[144][165] [167][129]@":next
370 printtab(9)"[144][165] [163][163][163][163][163][163][163][220]"
380 forx=1to3:printtab(9)"[144][165] [167][129]@":next
390 printtab(9)"[144]\[164][164][164][164][164][164][164] [167][129]@"
395 printtab(10)"@@@@@@@[145]"
400 forx=1to5:printtab(17)"[144][165] [167][129]@":next
402 printtab(17)"[144]\[164][164][164][164][164][164][164][164][164][164][164][164][219][129]@"
403 printtab(18)"[129]@@@@@@@@@@@@@@"
405 n=0:b$=""
410 print""tab(27)"[155]soln: 46":printtab(27)"[155]moves: 0"
420 forx=0to2:fory=0to2:gd(x,y)=1:gd(x+2,y+2)=2:next:next:gd(2,2)=0:bk=12:mv=0
430 gosub940
440 ifgm=2then490
450 form=1to46:js=sn(m):gosub710:fortt=1to100:next:next
460 xx=22:yy=19:ww=11:dd=1:gosub3000
465 print"[145][145][145]"tab(23)"press a key"
470 gosub1670
480 return
490 gosub560:iftthen490
495 ifqthenq=0:goto550
500 xx=23:yy=18:ww=13:dd=2:gosub3000:print"[145][145][145][145][145]"
505 ifb$="y"then550
510 ifn=16thenprinttab(25)"you got it!":goto530
520 printtab(24)"you're stuck!"
530 printtab(25)"press a key"
540 gosub1670
550 return
560 gosub1670:ifjs=15then560
570 ifa$="q"thenq=1:return
630 ifa$="i"thenjs=30
640 ifa$="k"thenjs=23
650 ifa$="m"thenjs=29
660 ifa$="j"thenjs=27
670 ifa$="[201]"thenjs=14
680 ifa$="[203]"thenjs=7
690 ifa$="[205]"thenjs=13
700 ifa$="[202]"thenjs=11
710 db=1:if(jsand16)=0thendb=2
720 if(jsand1)=0thenfm=bk+5*db:pc=2
730 if(jsand2)=0thenfm=bk-5*db:pc=1
740 if(jsand4)=0thenfm=bk+1*db:pc=2
750 if(jsand8)=0thenfm=bk-1*db:pc=1
760 xt=int(bk/5):yt=bk-5*xt:xf=int(fm/5):yf=fm-5*xf
770 iffm<0orfm>24then560
780 ifgd(xf,yf)=0orgd(xf,yf)<>pcthen560
790 mv=mv+1:gd(xt,yt)=gd(xf,yf):gd(xf,yf)=0:bk=fm:x=yf:y=xf:gosub960
800 x=yt:y=xt:gosub960:t=0:ifxf>0thenifgd(xf-1,yf)=1thent=-1
810 ifxf>1thenifgd(xf-2,yf)=1thent=-1
820 ifxf<4thenifgd(xf+1,yf)=2thent=-1
830 ifxf<3thenifgd(xf+2,yf)=2thent=-1
840 ifyf>0thenifgd(xf,yf-1)=1thent=-1
850 ifyf>1thenifgd(xf,yf-2)=1thent=-1
860 ifyf<4thenifgd(xf,yf+1)=2thent=-1
870 ifyf<3thenifgd(xf,yf+2)=2thent=-1
880 iftthenreturn
890 forx=0to2:fory=0to2:ifgd(x,y)=2thenn=n+1
900 ifgd(x+2,y+2)=1thenn=n+1
910 next:next
920 ifgd(2,2)>0thenn=n-1
930 return
940 fory=0to2:forx=0to2:gosub960:next:next
950 fory=2to4:forx=2to4:gosub960:next:next:return
960 print"";:fora=0tox:print"";:next:fora=0toy:print"";
970 next:printcl$(gd(y,x))bk$:print""tab(33)mv:return
980 print"[147][150]":gosub2000:xx=2:yy=1:ww=20:dd=3:gosub3000
985 print""tab(5)"_[192] switch 'em [192]^"
987 printtab(7)"[155]l e v e l 1"
990 gosub4000
1000 print"[145][145][145][145][145][145][144][171][179][177][178][171][179][177][178][171][179][177][178][171][179][177][178][158][171][179][177][178][171][179][177][178][171][179][177][178][171][179][177][178][171][179][177][178]"
1010 print"[144][176][174][172][187][176][174][172][187][176][174][172][187][176][174][172][187][158][176][174][172][187][176][174][172][187][176][174][172][187][176][174][172][187][176][174][172][187]"
1020 print"[144][173][189][188][190][173][189][188][190][173][189][188][190][173][189][188][190][158][173][189][188][190][173][189][188][190][173][189][188][190][173][189][188][190][173][189][188][190]"
1030 n=0:b$=""
1035 xx=26:yy=3:ww=9:dd=2:gosub3000
1040 print"[155]"tab(27)"soln: 24":printtab(27)"[155]moves: 0"
1045 gosub5000
1050 forx=0to3:gr(x)=1:gr(x+5)=2:next:gr(4)=0:bk=4:mv=0
1060 ifgm=1then1110
1070 form=1to24:js=sl(m):gosub1290:fortt=1to200:next:next
1080 gosub3000:poke214,19:print:printtab(7)"press any key to continue"
1090 gosub1670
1100 return
1110 gosub1180:iftthen1110
1120 ifqthenq=0:goto1170
1125 xx=2:yy=16:ww=34:dd=4:gosub3000:poke214,18:print""
1130 ifn=8thenprinttab(14)"you got it!":goto1150
1140 printtab(10)"uh oh, you're stuck"
1150 printtab(7)"press any key to continue"
1160 gosub1670
1170 return
1180 gosub1670:ifjs=15then1180
1190 ifa$="q"thenq=1:return
1250 ifa$="k"thenjs=23
1260 ifa$="j"thenjs=27
1270 ifa$="[203]"thenjs=7
1280 ifa$="[202]"thenjs=11
1290 db=1:if(jsand16)=0thendb=2
1300 if(jsand4)=0thenfm=bk+db:pc=2
1310 if(jsand8)=0thenfm=bk-db:pc=1
1320 xt=bk:xf=fm
1330 iffm<0orfm>9then1180
1340 ifgr(xf)=0orgr(xf)<>pcthen1180
1350 mv=mv+1:gr(xt)=gr(xf):gr(xf)=0:bk=fm:x=xf:gosub1450
1360 x=xt:gosub1450:t=0:ifxf>0thenifgr(xf-1)=1thent=-1
1370 ifxf>1thenifgr(xf-2)=1thent=-1
1380 ifxf<9thenifgr(xf+1)=2thent=-1
1390 ifxf<8thenifgr(xf+2)=2thent=-1
1400 iftthenreturn
1410 forx=0to3:ifgr(x)=2thenn=n+1
1420 ifgr(x+5)=1thenn=n+1
1430 next
1440 return
1450 print"[157][157]";:fora=0tox:print"";:next
1460 printcl$(gr(x))bk$:print""tab(33)mv:return
1470 print"[147]"tab(5)"_[195] switch 'em instructions [195]^"
1480 print"[158]the object of this puzzle is to switch"
1490 print"the positions of the black stones with"
1500 print"the white stones. black stones may only"
1510 print"move down or to the right, and white"
1520 print"stones may only move up or to the left."
1530 print"stones move one at a time into the"
1540 print"empty space, which is yellow."
1550 print"[155] level 1 puzzle level 2 puzzle"
1560 print" [144][209][209][209]"
1570 print" [144][209][209][209]"
1580 print" [144][209][209][209][209][158][209][209][209][209][209] [144][209][209][158][209][209][209]"
1590 print" [209][209][209]"
1600 print" [209][209][209]"
1610 print"[158]controls: up[158] - i [158]or you may"
1620 print" down [158]- m [158]use a joystick"
1630 print" left [158]- j [158]plugged into"
1640 print" right [158]- k [158]port 2"
1650 print"hold shift or the firebutton to jump.